디자인 패턴
건축에서의 패턴 언어와 차이점
크리스토퍼 알렉산더의 패턴 언어에서 차용했으나 GoF 패턴 책 또는 그와 유사한 패턴 언어는 표면적인 형식만 가져온 느낌이 든다.
CA가 패턴 언어를 context-problem-solution 형식으로 정의한 이유는 QWAN을 얻어낼 수 있는 건축의 언어를 되살려내고 이를 서로 공유하기 위함이었는데 소프트웨어 패턴에서는 QWAN 개념 또는 그와 대응되는 무언가가 별로 언급되지 않는다. 최종사용자와 소프트웨어의 동작이나 외관에 집중하기보다는, 소프트웨어 개발자와 소프트웨어의 내부 설계에 좀 더 집중하는 느낌.
To work our way toward a shared and living language once again, we must first learn how to discover patterns which are deep, and capable of generating life. If we hope to bring our towns and buildings back to life, we must begin to re-create our languages, in such a way that all of us can use them…. In order to make patterns explicit, so that they can be shared in this new way, we must first of all review the very complex structure of a pattern.
Each pattern is a three-part rule, which expresses a relation between a certain context, a problem, and a solution.
As an element in the world, each pattern is a relationship between a certain context, a certain system of forces which occurs repeatedly in that context, and a certain spatial configuration which allows these forces to resolve themselves. As an element of language, a pattern is an instruction, which shows how this spatial configuration can be used, over and over again, to resolve the given system of forces, wherever the context makes it relevant. The pattern is, in short, at the same time a thing, which happens in the world, and the rule which tells us how to create that thing; both a description of a thing which is alive, and a description of the process which will generate that thing.1
Footnotes
-
Chapter 14 “Patterns which can be shared”, The timeless way of building ↩